Many computing devices currently use traditional Basic Input/Output Systems. These basic input/output systems, also called BIOS, are firmware code run by a computing device when first powered on. The BIOS is primarily directed to identifying and initializing system component hardware, such as video-display cards and memory, to name a few. By so doing the BIOS prepares the computing device to operate in a known, low-capability state so that software programs stored on various media can be loaded, executed, and given control of the computing device.
These traditional BIOS, however, have significant limitations. These limitations include 16-bit segmented addressing, code mixing (typically assembly and “C” code), significant difficulties in being developed or debugged, and/or limited resources for data and code. These limited resources can make it difficult for a BIOS to perform even moderately complex operations or those having moderate memory requirements.